import { LocaleData } from '../locale/locale.class';

//! moment.js locale configuration
//! locale : Estonian [et]
//! author : Chris Gedrim : https://github.com/a90machado

const processRelativeTime = function (num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {
  const format = {
      s : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
      ss: [num + 'sekundi', num + 'sekundit'],
      m : ['ühe minuti', 'üks minut'],
      mm: [num + ' minuti', num + ' minutit'],
      h : ['ühe tunni', 'tund aega', 'üks tund'],
      hh: [num + ' tunni', num + ' tundi'],
      d : ['ühe päeva', 'üks päev'],
      M : ['kuu aja', 'kuu aega', 'üks kuu'],
      MM: [num + ' kuu', num + ' kuud'],
      y : ['ühe aasta', 'aasta', 'üks aasta'],
      yy: [num + ' aasta', num + ' aastat']
  };
  if (withoutSuffix) {
      return format[key][2] ? format[key][2] : format[key][1];
  }
  return isFuture ? format[key][0] : format[key][1];
};

export const etLocale: LocaleData = {
  abbr: 'et',
  months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
  monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
  weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
  weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
  weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
  longDateFormat: {
    LT:   'H:mm',
    LTS:  'H:mm:ss',
    L:    'DD.MM.YYYY',
    LL:   'D. MMMM YYYY',
    LLL:  'D. MMMM YYYY H:mm',
    LLLL: 'dddd, D. MMMM YYYY H:mm'
  },
  calendar: {
    sameDay:  '[Täna,] LT',
    nextDay:  '[Homme,] LT',
    nextWeek: '[Järgmine] dddd LT',
    lastDay:  '[Eile,] LT',
    lastWeek: '[Eelmine] dddd LT',
    sameElse: 'L'
  },
  relativeTime : {
    future : '%s pärast',
    past   : '%s tagasi',
    s      : processRelativeTime,
    ss     : processRelativeTime,
    m      : processRelativeTime,
    mm     : processRelativeTime,
    h      : processRelativeTime,
    hh     : processRelativeTime,
    d      : processRelativeTime,
    dd     : '%d päeva',
    M      : processRelativeTime,
    MM     : processRelativeTime,
    y      : processRelativeTime,
    yy     : processRelativeTime
  },
  dayOfMonthOrdinalParse : /\d{1,2}./,
  ordinal : '%d.',
  week : {
      dow : 1, // Monday is the first day of the week.
      doy : 4  // The week that contains Jan 4th is the first week of the year.
  }
};
